#include "base16.h"
#include "base64.h"

uint32_t base16_base64_encode(uint8_t *psrc, uint32_t src_len, uint8_t *pdst, uint32_t dst_len) {
    uint32_t base64_encode_len = BASE64_ENCODE_LEN(src_len);
    if (BASE16_ENCODE_LEN(base64_encode_len) > dst_len) {
        return 0;
    }
    src_len = base64_encode(psrc, src_len, pdst + base64_encode_len, dst_len);
    if (src_len == 0) {
        return 0;
    }
    //else
    return base16_encode(pdst + base64_encode_len, src_len, pdst, dst_len);
}


uint32_t base64_base16_decode(uint8_t *psrc, uint32_t src_len, uint8_t *pdst, uint32_t dst_len) {
    src_len = base16_decode(psrc, src_len, pdst, dst_len);
    if (src_len == 0) {
        return 0;
    }
    return base64_decode(pdst, src_len, pdst, dst_len);
}
